package com.syf.kit.core.ds.config;

import com.syf.kit.cont.RdsDSCont;
import lombok.Data;

import javax.validation.constraints.NotNull;

@Data
public class PooledRdsDbConfig {
    @NotNull
    private String dsName = RdsDSCont.DEFAULT_DS_NAME;

    @NotNull
    private String jdbcUrl;

    @NotNull
    private String dbUser;

    @NotNull
    private String dbPassword;

    @NotNull
    private String databaseName;

    /**
     * 初始大小
     */
    private int initSize = 1;

    /**
     * 最小空闲连接数
     */
    private int minIdleSize = 1;

    /**
     * 最大空闲连接数
     */
    private int maxIdleSize = 1;

    /**
     * 最大连接数
     */
    private int maxSize = 20;

    /**
     * 获取连接的最大等待时间，单位Ms
     */
    private String maxWaitMs = "3000";

    /**
     * 连接有效性校验sql
     */
    private String validateSql = "SELECT 'x'";

    /**
     * 从池中拿取出来，是否校验
     */
    private boolean testOnBorrow = false;

    /**
     * 归还给池中，是否校验
     */
    private boolean testOnReturn = false;

    /**
     * 在池中空闲时，是否校验
     */
    private boolean testWhileIdle = true;

    /**
     * 回收空闲的线程的运行间隔时间，一般是minEvictableIdleTimeMs的1/4.
     */
    private int timeBetweenEvictionRunsMs = 30000;

    /**
     * 连接池中连接，可空闲的时间. 默认两分钟
     */
    private int minEvictableIdleTimeMs = 120000;
}
